home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
051-060
/
amok52
/
gadgeted
/
txt
/
io.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
3KB
|
93 lines
(*----------------------------------------------------------------------
:Program. Io.mod
:Contents. Abspeichern und Laden einer Gadget-Struktur
:Author. Hubert Bildstein
:Copyright. Public Domain
:Language. Modula-2
:Translator. M2Amiga V3.3d
:History. V1.0 5.12.1990
----------------------------------------------------------------------*)
IMPLEMENTATION MODULE Io;
(* Modul zur Ein/Ausgabe der Gadgetinformationen *)
FROM SYSTEM IMPORT ADDRESS, ADR, BYTE;
FROM FileSystem IMPORT File, Response, Lookup, Close, ReadBytes, WriteBytes;
FROM Str IMPORT Compare;
CONST BufferSize = 512;
ID = "GEd00"; (* "00" für evtl. spätere Dateiformate *)
VAR f : File;
actual : LONGINT;
(*--------------------------------------------------------------------------*)
PROCEDURE Load ( name : ARRAY OF CHAR;
VAR Feld : ARRAY OF BYTE;
VAR WFeld : ARRAY OF BYTE;
VAR length : LONGINT) : Response;
(* Einladen der Gadgetinformation in ein Feld *)
VAR ReadID : ARRAY [1..SIZE(ID)] OF CHAR;
len : LONGINT;
BEGIN
(* Öffnen *)
Lookup (f,name,BufferSize,FALSE);
IF (f.res # done) THEN Close(f); RETURN f.res END;
(* Lesen *)
ReadBytes (f,ADR(ReadID),SIZE(ID),actual);
IF (Compare(ID,ReadID) # 0) THEN Close (f); RETURN notdone END;
ReadBytes (f,ADR(len),SIZE(len),actual); (* Länge *)
ReadBytes (f,ADR(WFeld),len,actual); (* Window *)
ReadBytes (f,ADR(length),SIZE(length),actual); (* Länge *)
ReadBytes (f,ADR(Feld),length,actual); (* Gadgets *)
IF (f.res # done) THEN Close (f); RETURN f.res END;
(* Schließen *)
Close (f);
RETURN f.res;
END Load;
(*--------------------------------------------------------------------------*)
PROCEDURE Save (name : ARRAY OF CHAR;
adr1 : ADDRESS;
len1 : LONGINT;
adr2 : ADDRESS;
len2 : LONGINT) : Response;
(* Speichern der Gadgetinformationen *)
BEGIN
(* Öffnen *)
Lookup (f,name,BufferSize,TRUE);
IF (f.res # done) THEN Close(f); RETURN f.res END;
(* Schreiben *)
WriteBytes (f,ADR(ID),SIZE(ID),actual); (* Kennung *)
WriteBytes (f,ADR(len1),SIZE(len1),actual); (* Länge *)
WriteBytes (f,adr1,len1,actual); (* FensterInfo *)
WriteBytes (f,ADR(len2),SIZE(len2),actual); (* Länge *)
WriteBytes (f,adr2,len2,actual); (* Inhalt *)
IF (f.res # done) THEN Close(f); RETURN f.res END;
(* Schließen *)
Close (f);
RETURN f.res;
END Save;
(*--------------------------------------------------------------------------*)
END Io.